package com.alibaba.citrus.cr.platform.enhance.facade.sls;

import java.util.UUID;

import com.aliyun.openservices.loghub.client.config.LogHubConfig;
import lombok.Getter;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * @author: qiaojiange
 * @create: 2021/11/09
 * @Description sls 配置
 */
@Getter
@Configuration
public class SlsConfig {
    /**
     * 日志服务域名，请您根据实际情况填写。
     */
    @Value("${cz.landlord.sls.endpoint:#{null}}")
    private String sEndpoint;
    /**
     * 日志服务项目名称，请您根据实际情况填写。
     */
    @Value("${cz.landlord.sls.project:#{null}}")
    private String sProject;
    /**
     * 日志库名称，请您根据实际情况填写。
     */
    @Value("${cz.landlord.sls.logstore:#{null}}")
    private String sLogstore;
    /**
     * 消费组名称，请您根据实际情况填写。
     */
    @Value("${cz.landlord.sls.consumerGroup:#{null}}")
    private String sConsumerGroup;
    /**
     * 消费数据的用户AK信息，请您根据实际情况填写。
     */
    @Value("${cz.landlord.sls.accessKey:#{null}}")
    private String sAccessKeyId;

    @Value("${cz.landlord.sls.secret:#{null}}")
    private String sAccessKey;

    private LogHubConfig logHubConfig;

    @Bean
    public LogHubConfig getLogHubConfig() {
        if (StringUtils.isBlank(this.getSEndpoint())) {
            return new LogHubConfig(null,null,null,null,null,null,null,null);
        }

        if (logHubConfig == null) {
            logHubConfig = new LogHubConfig(this.getSConsumerGroup(),
                    getUuid(),
                    this.getSEndpoint(),
                    this.getSProject(),
                    this.getSLogstore(),
                    this.getSAccessKeyId(),
                    this.getSAccessKey(),
                    LogHubConfig.ConsumePosition.BEGIN_CURSOR);
        }
        return logHubConfig;
    }

    /**
     * 获取uuid
     *
     * @return
     */
    private String getUuid() {
        return UUID.randomUUID().toString().replace("-", "");
    }
}
